# Preferably using NUTS-3 code if possible
swiss_student_map <- swiss_students_gender %>%
filter(schulkanton != "Schweiz") %>%
mutate(schulkanton = str_remove(schulkanton, ".*/"),
schulkanton = str_trim(schulkanton),
schulkanton = recode(schulkanton, "Berne" = "Bern", "Grischun" = "Graubünden", "Wallis" = "Valais")) %>%
left_join(switzerland_sf, by = c("schulkanton" = "NUTS_NAME"))
swiss_student_map
#> # A tibble: 12,420 × 18
#> bildungsstufe schulkanton staatsangehorigkeit_…¹ jahr `Geschlecht - Total`
#> <chr> <chr> <chr> <chr> <dbl>
#> 1 Bildungsstufe … Zürich Staatsangehörigkeit -… 1999… 209028
#> 2 Bildungsstufe … Zürich Staatsangehörigkeit -… 2000… 210844
#> 3 Bildungsstufe … Zürich Staatsangehörigkeit -… 2001… 211811
#> 4 Bildungsstufe … Zürich Schweiz 1999… 161170
#> 5 Bildungsstufe … Zürich Schweiz 2000… 161670
#> 6 Bildungsstufe … Zürich Schweiz 2001… 162710
#> 7 Bildungsstufe … Zürich Ausland 1999… 47856
#> 8 Bildungsstufe … Zürich Ausland 2000… 49167
#> 9 Bildungsstufe … Zürich Ausland 2001… 49099
#> 10 Bildungsstufe … Zürich Unbekannt 1999… 2
#> # ℹ 12,410 more rows
#> # ℹ abbreviated name: ¹staatsangehorigkeit_kategorie
#> # ℹ 13 more variables: Mann <dbl>, Frau <dbl>, share_woman <dbl>, id <chr>,
#> # LEVL_CODE <int>, NUTS_ID <chr>, CNTR_CODE <chr>, NAME_LATN <chr>,
#> # MOUNT_TYPE <int>, URBN_TYPE <int>, COAST_TYPE <int>, FID <chr>,
#> # geometry <MULTIPOLYGON [°]>